package com.study.cloud.gateway.common.request;

import org.asynchttpclient.Request;
import org.asynchttpclient.cookie.Cookie;

/**
 * 网络请求request接口
 * @author wangwancheng
 * @create 2025/7/17 15:40
 */
public interface IGatewayRequest {
    /**
     * 添加请求头信息
     * @param name
     * @param value
     */
    void addHeader(CharSequence name,String value);

    /**
     * 设置请求头信息
     * @param name
     * @param value
     */
    void setHeader(CharSequence name,String value);

    /**
     * 添加或替换cookie
     * @param cookie
     */
    void addOrReplaceCookie(Cookie cookie);

    /**
     * 设置超时时间
     * @param timeout
     */
    void setRequestTimeout(int timeout);

    /**
     * 修改域名
     * @param modifyHost
     */
    void setModifyHost(String modifyHost);

    /**
     * 设置路径
     * @param modifyPath
     */
    void setModifyPath(String modifyPath);

    /**
     * 获取路径
     */
    String getModifyPath();

    /**
     * get请求参数
     * @param name
     * @param value
     */
    void addQueryParam(String name,String value);

    /**
     * post 增加参数
     * @param name
     * @param value
     */
    void addFormParam(String name,String value);

    /**
     * 获取最终请求路径
     * @return
     */
    String getFinalUrl();

    /**
     * 构建最终的请求对象
     * @return
     */
    Request build();
}
